package top.suven.base.http.admin.user.service;

import top.suven.base.core.mybatis.PageData;
import top.suven.base.http.admin.user.model.User;
import top.suven.base.http.admin.user.vo.response.UserRegisterStatisticsVo;
import top.suven.base.http.admin.user.vo.response.UserResponseVo;
import top.suven.base.http.admin.user.vo.response.UserWeekRegisterVo;

import java.util.List;

/**
 * @Title: UserWebService.java
 * @Description: 用户的业务处理服务类
 * @author lixiangling
 * @date   2018/08/28 16:10:56
 * @version  V1.0.0
 * ----------------------------------------------------------------------------
 *  modifyer    modifyTime                 comment
 *
 * ----------------------------------------------------------------------------
 *
 */
public interface UserWebService {
    /**
     * @Title: 获取用户分页信息
     * @Description:
     * @param user @{Link User}
     * @return
     * @throw
     * @author lixiangling
     * @date 2018/08/28 16:10:56
     *  --------------------------------------------------------
     *  modifyer    modifyTime                 comment
     *
     *  --------------------------------------------------------
     */
    public PageData<UserResponseVo> getUserPage(User user, int start, int pageSize);
   /**
    * @Title: 获取用户列表信息
    * @Description:
    * @param user @{Link User}
    * @return
    * @throw
    * @author lixiangling
    * @date 2018/08/28 16:10:56
    *  --------------------------------------------------------
    *  modifyer    modifyTime                 comment
    *
    *  --------------------------------------------------------
    */
    public List<User> getUserList(User user);
    /**
     * @Title: 新增用户信息
     * @Description:
     * @param user @{Link User}
     * @return
     * @throw
     * @author lixiangling
     * @date 2018/08/28 16:10:56
     *  --------------------------------------------------------
     *  modifyer    modifyTime                 comment
     *
     *  --------------------------------------------------------
     */
    public void addUser(User user);
    /**
    * @Title: 修改用户信息
    * @Description:
    * @param user @{Link User}
    * @return
    * @throw
    * @author lixiangling
    * @date 2018/08/28 16:10:56
    *  --------------------------------------------------------
    *  modifyer    modifyTime                 comment
    *
    *  --------------------------------------------------------
    */
    public void updUser(User user);
   /**
    * @Title: 获取用户信息
    * @Description:
    * @param id @{Link Long}
    * @return
    * @throw
    * @author lixiangling
    * @date 2018/08/28 16:10:56
    *  --------------------------------------------------------
    *  modifyer    modifyTime                 comment
    *
    *  --------------------------------------------------------
    */
    public User getUser(Long id);
    /**
     * @Title: 删除用户信息
     * @Description:id @{Link Long[]}
     * @param
     * @return
     * @throw
     * @author lixiangling
     * @date 2018/08/28 16:10:56
     *  --------------------------------------------------------
     *  modifyer    modifyTime                 comment
     *
     *  --------------------------------------------------------
     */
    public void del(Long[] ids);
   /**
    * @Title: 启用用户信息
    * @Description:id @{Link Long[]}
    * @param
    * @return
    * @throw
    * @author lixiangling
    * @date 2018/08/28 16:10:56
    *  --------------------------------------------------------
    *  modifyer    modifyTime                 comment
    *
    *  --------------------------------------------------------
    */
    public void turnOn(Long[] ids);
   /**
    * @Title: 禁用用户信息
    * @Description:id @{Link Long[]}
    * @param
    * @return
    * @throw
    * @author lixiangling
    * @date 2018/08/28 16:10:56
    *  --------------------------------------------------------
    *  modifyer    modifyTime                 comment
    *
    *  --------------------------------------------------------
    */
    public void turnOff(Long[] ids);
    /**
     * @Title: 获取一周的注册信息
     * @Description:
     * @param
     * @return
     * @throw
     * @author lixiangling
     * @date 2018/8/28 16:33
     *  --------------------------------------------------------
     *  modifyer    modifyTime                 comment
     *
     *  --------------------------------------------------------
     */
    public UserWeekRegisterVo getWeekRegisterCount();
    /**
     * @Title: 获取注册统计信息（同比，环比）
     * @Description:
     * @param
     * @return
     * @throw
     * @author lixiangling
     * @date 2018/8/30 17:49
     *  --------------------------------------------------------
     *  modifyer    modifyTime                 comment
     *
     *  --------------------------------------------------------
     */
    public UserRegisterStatisticsVo getRegisterStatistics();
    /**
     * @Title: 获取注册日增长率
     * @Description:
     * @param
     * @return
     * @throw
     * @author lixiangling
     * @date 2018/8/31 17:07
     *  --------------------------------------------------------
     *  modifyer    modifyTime                 comment
     *
     *  --------------------------------------------------------
     */
    public UserRegisterStatisticsVo getDayRegisterStatistics();
}